進行引數傳遞時,若引數不固定數目,可使用方法參數params;
當方法中已使用了方法參數params,就無法再使用其他的方法參數。
而且方法方法中params關鍵字只能使用一次,
什麼情況下會使用方法參數params?通常是處理陣列元素!
由於陣列的長度可能不一致,配合for迴圈,更能靈活讀取陣列元素。
//student.cs
namespace ConsoleApp4
{
class Student
{
public static void CalcScore(params int[] one)
{
int sum = 0; double average = 0.0;
for (int count = 0; count < one.Length; count++)
sum += one[count];
average = (double)sum / one.Length;
Console.WriteLine($"總分={sum},平均 = {average}");
}
}
}
//program.cs
namespace ConsoleApp4 // 加入命名空間,保持一致
{
class Program
{
static void Main(string[] args)
{
int[] scorel = { 78, 96, 45, 33 };
Console.WriteLine($"Peter 修了 {scorel.Length} 科\n");
// 使用 {scorel.Length} 來顯示科目數量
Student.CalcScore(scorel); // 使用類別名稱調用靜態方法
}
}
}
關鍵字ref和out不同
傳遞機制中採用傳址呼叫時,方法參數是ref或out都必須加在實際引數和形式參數前端。
它們的最大差異,有ref關鍵字的實際引數必須先做初始化,而out關鍵字則不用將變數設定初始化,但必須在方法內完成變數值的指派動作。
//student.cs
namespace ConsoleApp4
{
class Student
{
// 定義 intArray 方法來初始化並返回一個整數陣列
public static void intArray(out int[] one)
{
// 這裡初始化一個整數陣列,長度為4
one = new int[] { 78, 96, 45, 33 };
}
}
}
//program.cs
namespace ConsoleApp4 // 加入命名空間,保持一致
{
class Program
{
static void Main(string[] args)
{
int[] two;
Student.intArray(out two);
// 呼叫 Student 類別的 intArray 方法
Console.WriteLine("陣列元素:");
for (int i = 0; i < two.Length; i++)
{
Console.WriteLine(two[i] + "");
// 輸出陣列中的每個元素
}
}
}
}
比對差異
以上來源:從零開始學visual C# 2017程式設計、W3Schools、詢問chatGPT
內容有誤的話,請留言或發訊息給我